[アップデート] EC2 Image Builder のリソースを CloudFormation で作成できるようになりました!
CloudFormation によって EC2 Image Builder のリソースを作成できるようになりました。
Component のみならず Image Pipeline 全体までコードで管理できるようになったため、より利便性が向上しそうです。
EC2 Image Builder now includes support for AWS CloudFormation
EC2 Image Builderとは
EC2 Image Builder は EC2 のイメージの作成・更新を専用のパイプラインによって簡素化・迅速化する AWS サービスです。
サービスの詳細についてはリリース当時のブログや公式ページなどをご参照ください。
EC2のイメージ作成を劇的に効率化するEC2 Image Builderが発表されました!
EC2 Image Builder(AWS公式ページ)
やってみた
こちらのブログで書いたような Image Pipeline を作成するテンプレートを書いてみました。
OS(ディストリビューション)には Amazon Linux 2 を指定しています。
サンプルテンプレート
AWSTemplateFormatVersion: 2010-09-09 Resources: Pipeline: Type: AWS::ImageBuilder::ImagePipeline Properties: ImageRecipeArn: !Ref Recipe InfrastructureConfigurationArn: !Ref InfrastructureConfiguration Name: CFn-Pipeline InfrastructureConfiguration: Type: AWS::ImageBuilder::InfrastructureConfiguration Properties: InstanceProfileName: !Ref InstanceProfile InstanceTypes: [] Name: CFn-InfrastructureConfiguration SecurityGroupIds: [] TerminateInstanceOnFailure: True InstanceProfile: Type: AWS::IAM::InstanceProfile Properties: InstanceProfileName: ImageBuilderInstanceProfile Roles: - EC2ImageBuilder Component: Type: AWS::ImageBuilder::Component Properties: Data: | name: InstallApache description: InstallApache schemaVersion: 1.0 phases: - name: build steps: - name: UpdateOS action: UpdateOS - name: InstallApache action: ExecuteBash inputs: commands: - sudo yum -y install httpd - sudo systemctl enable httpd - name: validate steps: - name: CheckApache action: ExecuteBash inputs: commands: - rpm -qi httpd - name: test steps: - name: TestApache action: ExecuteBash inputs: commands: - sudo systemctl status httpd Name: CFn-Component Platform: Linux Version: 1.0.0 Recipe: Type: AWS::ImageBuilder::ImageRecipe Properties: Components: - ComponentArn: !Ref Component Name: CFn-Recipe ParentImage: arn:aws:imagebuilder:ap-northeast-1:aws:image/amazon-linux-2-x86/2020.4.7 Version: 1.0.0
注意点
- テンプレート内で使用しているIAMロール
EC2ImageBuilder
はテンプレート外で作成されており、下記の AWS 管理ポリシーが割り当てられています。- EC2InstanceProfileForImageBuilder
- AmazonSSMManagedInstanceCore
- リソース
Type: AWS::ImageBuilder::ImageRecipe
のParentImage
には下記のいずれかを設定する必要があります。- EC2 Image Builder によって提供されている Managed Images(後述) の ARN
- SSM Agent がインストールされたカスタムイメージの AMI ID
Managed Images の探し方
マネージメントコンソールから
対象OSを選択しBrowse images
をクリックすることで一覧できます。
AWS CLIから
aws imagebuilder list-images
コマンド(list-images)をお使いください。
たとえば、 AWS によって提供されている Linux の Managed Images を探す場合は下記のとおりです。
$ aws imagebuilder list-images --owner Amazon --filters "name=platform,values=Linux" --query "imageVersionList[*].[name,arn,version]" --output table ------------------------------------------------------------------------------------------------------------------------------------------------------ | ListImages | +--------------------------------------+-----------------------------------------------------------------------------------------------+-------------+ | Amazon Linux 2 x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/amazon-linux-2-x86/2019.11.21 | 2019.11.21 | | Amazon Linux 2 x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/amazon-linux-2-x86/2020.1.8 | 2020.1.8 | | Amazon Linux 2 x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/amazon-linux-2-x86/2020.2.13 | 2020.2.13 | | Amazon Linux 2 x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/amazon-linux-2-x86/2020.3.7 | 2020.3.7 | | Amazon Linux 2 x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/amazon-linux-2-x86/2020.4.7 | 2020.4.7 | | CentOS Linux 7 Minimal x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/centos-linux-7-minimal-x86/2020.3.9 | 2020.3.9 | | Red Hat Enterprise Linux 7 x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/red-hat-enterprise-linux-7-x86/2018.8.15 | 2018.8.15 | | Red Hat Enterprise Linux 8 x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/red-hat-enterprise-linux-8-x86/2019.6.19 | 2019.6.19 | | SUSE Linux Enterprise Server 15 x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/suse-linux-enterprise-server-15-x86/2020.4.13 | 2020.4.13 | | SUSE Linux Enterprise Server 15 x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/suse-linux-enterprise-server-15-x86/2020.5.1 | 2020.5.1 | | SUSE Linux Enterprise Server 15 x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/suse-linux-enterprise-server-15-x86/2020.5.2 | 2020.5.2 | | SUSE Linux Enterprise Server 15 x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/suse-linux-enterprise-server-15-x86/2020.5.7 | 2020.5.7 | | Ubuntu Server 16 LTS x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/ubuntu-server-16-lts-x86/2020.4.29 | 2020.4.29 | | Ubuntu Server 16 LTS x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/ubuntu-server-16-lts-x86/2020.4.9 | 2020.4.9 | | Ubuntu Server 18 LTS x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/ubuntu-server-18-lts-x86/2020.4.9 | 2020.4.9 | | Ubuntu Server 18 LTS x86 | arn:aws:imagebuilder:ap-northeast-1:aws:image/ubuntu-server-18-lts-x86/2020.5.7 | 2020.5.7 | +--------------------------------------+-----------------------------------------------------------------------------------------------+-------------+
参考
ImageBuilder Resource Type Reference
終わりに
このブログがほんの少しでも世界を良くできれば嬉しいです。
コンサルティング部の西野(@xiyegen)がお送りしました。